home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / telecomm / fnordadl / fn132src.zoo / cith / ctdl.h < prev    next >
C/C++ Source or Header  |  1991-09-02  |  7KB  |  203 lines

  1. /*
  2.  * ctdl.h -- header file for all Citadel C files
  3.  */
  4.  
  5. /*
  6.  * 91Apr29 AA    Broke up into lots of other files -- ctdl.h is now common stuff
  7.  * 90Nov05 AA    Hacks for gcc/ANSI compatibility
  8.  * 90Oct31 AA    Added cfg.roomdir.
  9.  * 90Oct22 A&R    'MAXLOGTAB' (which we've hated for aeons) --> 'logsize'.  Also
  10.  *        added MAX, MIN & SANE limits for maxrooms, mailslots,
  11.  *        sharedrooms, logsize.
  12.  * 90Aug23 AA    Now #includes "citlib.h" for library declarations
  13.  * 90Jan30 A&R    Major hacks for msgs/room, room/system and other limits.
  14.  *        (Thanks to Hue, Jr. for some inspiration and code.)
  15.  * 89Oct14 AA    Changed all boolean variables to bitfields.
  16.  * 88Jul12 orc    Moved many fields around, removed unneeded ones
  17.  * 88Mar21 orc    Add 19200 baud support macros, aideforget flag, filler
  18.  *        for future expansion.
  19.  * 88Feb13 orc    Protocol #defines into protocol.h.
  20.  * 88Jan30 orc    rbmoderator field removed from roomBuf structure, table
  21.  *        message fields put in its place.
  22.  * 87Oct27 orc    dirList & event stuff put into dirlist.h, event.h
  23.  * 87Oct15 orc    add cfg.usa for european systems.
  24.  * 87Sep06 orc    #define HUP (return for iChar())
  25.  * 87Aug25 orc    put modem-cc detection stuff into config structure
  26.  * 87Jul24 orc    put in autonet defines, allow 16 bits for l-d credits,
  27.  *        put expansion fields into structures.
  28.  * 87May19 orc    Ymodem yanked; system dependent stuff put into sysdep.h
  29.  * 87May17 orc    networking stuff extracted and put into ctdlnet.h,
  30.  *        data structures added for generalised event handling.
  31.  * 87Mar28 orc    major enhancements for version 1.00ST
  32.  * 87Feb28 orc    add #define for doExit() so return codes are* returned
  33.  * 87Feb07 orc    mini-terpreter indices removed from cfg, modemSetup string
  34.  *        added in.
  35.  * 87Jan17 orc    net stuff #ifdef'ed out
  36.  * 87Jan05 orc    roomfl, msgfl, logfl changed from FILE*
  37.  * 86Dec23 orc    Once again the trek to 68000land has begun
  38.  * 85Oct16 HAW    Add code for OFFICE-STUFF parameter.
  39.  * 85Aug29 HAW    Install code to allow double msg files for autobackup.
  40.  * 85Jun19 HAW    Implant exit values so batch files can be made useful.
  41.  * 85May27 HAW    Start adding networking gunk.
  42.  * 85May22 HAW    MAXLOGTAB now sysop selectable.
  43.  * 85May06 HAW    Add daily bailout parameter.
  44.  * 85May05 HAW    Add SYSDISK parameter.
  45.  * 85Mar20 HAW    Add timestamp code.
  46.  * 85Feb21 HAW    Add directory names.
  47.  * 85Feb20 HAW    Implement IMPERVIOUS flag.
  48.  * 85Feb18 HAW    Insert global variables for baud search.
  49.  * 85Jan20 HAW    Insert code to read from system clock.
  50.  * 84Aug30 HAW    Begin conversion to MS-DOS
  51.  */
  52.  
  53. #ifndef _CTDL_H
  54. #define _CTDL_H
  55.  
  56. #include <stdio.h>
  57. #include <stddef.h>
  58. #include <stdlib.h>
  59. #include <ctype.h>
  60. #include <time.h>
  61. #include <string.h>
  62.  
  63. #include <fcntl.h>
  64. #include <osbind.h>
  65.  
  66. #include "sysdep.h"
  67.  
  68. /*
  69.  * General form of bitfields.  Must have `long flags;' in structure.
  70.  *
  71.  * Usage examples:  (Assuming `struct config cfg;' is declared)
  72.  *     set(cfg,ENTEROK);        to set cfg.enterok to 1
  73.  *    clear(cfg,PATHALIAS);        to set cfg.pathalias to 0
  74.  *    i = (char)readbit(cfg,NOMAIL);    to read the value of cfg.nomail
  75.  *
  76.  * NOTE:  You must coerce the return value of readbit(); it's a long
  77.  * if you don't, and this is a Bad Thing.
  78.  */
  79.  
  80. #define flip(s,m)    s.flags ^= m        /* XOR to flip a bit    */
  81. #define set(s,m)    s.flags |= m        /* OR to set bit    */
  82. #define clear(s,m)    s.flags &= ~m
  83.                 /* AND with inverted mask to clear bit    */
  84. #define readbit(s,m)    ((s.flags & m)?1:0)    /* returns 0 or 1 only  */
  85.  
  86. /*
  87.  * could use
  88.  *     #define readbit(s,m)    (s.flags & m)
  89.  * if it is sufficient to return 0 if off, any other long value if on.
  90.  * NOTE, however, that you have to remember that the returned value
  91.  * is (long); if you don't, you could get erroneous results.
  92.  */
  93.  
  94. /* following are slight variations on the theme (this time with ptr deref): */
  95.  
  96. #define flipp(s,m)    s->flags ^= m        /* XOR to flip a bit    */
  97. #define setp(s,m)    s->flags |= m        /* OR to set bit    */
  98. #define clearp(s,m)    s->flags &= ~m
  99.                 /* AND with inverted mask to clear bit    */
  100. #define readpbit(s,m)    ((s->flags & m)?1:0)    /* returns 0 or 1 only  */
  101.  
  102.  
  103. #define    NODESIZE    10
  104. #define NAMESIZE    20        /* length of room names        */
  105. #define PATHSIZE    100        /* maximum length of paths    */
  106. #define ADDRSIZE    128        /* and net addresses        */
  107.  
  108. typedef char LABEL[NAMESIZE];        /* Semi-generic         */
  109. typedef char PATHBUF[PATHSIZE];
  110. typedef char NETADDR[ADDRSIZE];
  111.  
  112. typedef char    BOOL;
  113.  
  114. #define PTR_SIZE        (sizeof (void *))         /* could cause problems */
  115.  
  116. #define YES    1
  117. #define NO    0
  118. #define    TRUE    1
  119. #define    FALSE    0
  120. #define ERROR    (-1)
  121.  
  122. /* ASCII characters: */
  123. #define HUP       0
  124. #define SOH      1
  125. #define STX      2
  126. #define CNTRLC      3
  127. #define EOT      4
  128. #define ACK      6
  129. #define BELL      7
  130. #define BACKSPACE 8
  131. #define TAB      9
  132. #define NEWLINE     10
  133. #define CNTRLO     15
  134. #define    DLE     16
  135. #define SYN     22
  136. #define CNTRLl     12
  137. #define XOFF     19
  138. #define    XON     17
  139. #define NAK     21
  140. #define CAN     24
  141. #define CNTRLZ     26
  142. #define ESC     27
  143. #define SPECIAL    ESC
  144. #define DEL    127
  145.  
  146. #define SECTSIZE    128    /* Size of a Xmodem sector        */
  147. #define YMSECTSIZE    1024    /* Size of a Ymodem sector        */
  148. #define BLKSIZE    4096        /* size of a messagebase sector        */
  149.  
  150. /* Following typedef robbed from Hue, Jr.'s Cit-86 */
  151. typedef struct {
  152.     long msgno;            /* every message gets unique #          */
  153.     short msgloc;        /* sector message starts in             */
  154. } theMessages;
  155.  
  156. /* values for showMess routine */
  157. #define NEWoNLY     0
  158. #define OLDaNDnEW    1
  159. #define OLDoNLY     2
  160. #define GLOBALnEW    3
  161.  
  162. /*  output XON/XOFF etc flag... */
  163. #define OUTOK        0    /* normal output            */
  164. #define OUTAGAIN    1    /* a pause has been requested        */
  165. #define OUTNEXT     2    /* quit this message, get the next    */
  166. #define OUTSKIP     3    /* stop current process         */
  167. #define OUTPARAGRAPH    4    /* skip to next paragraph        */
  168. #define IMPERVIOUS    5    /* make current output unstoppable    */
  169. #define OUTBACKUP    6    /* go to previous item            */
  170.  
  171. #define NEITHER     0    /* don't echo input at all        */
  172. #define CALLER        1    /* echo to caller only --passwords etc    */
  173. #define BOTH        2    /* echo to caller and console both    */
  174.  
  175. /*
  176.  * Various `standard' exit stati
  177.  */
  178. #define SYSOP_EXIT    0        /* horrid error or ^Lq        */
  179. #define CRASH_EXIT    2        /* possibly fixable error    */
  180. #define REMOTE_EXIT    3        /* ^Lq from remote        */
  181.  
  182. /*
  183.  * Useful pseudo functions
  184.  */
  185. #define onLine()    ((haveCarrier || onConsole) && !eventExit)
  186. #define okRoom(i)    \
  187.     (!readbit(logBuf,uFLOORMODE) || (roomTab[i].rtfloorGen == floorTab[thisFloor].flGen))
  188. #define TheSysop()    (readbit(logBuf,uSYSOP) && (onConsole || remoteSysop))
  189. #define SomeSysop()    (readbit(logBuf,uSYSOP))
  190. #define DAY(t)        (t / 86400L)    /* Seconds -> days */
  191. #define MINUTE(t)    (t / 60L)    /* Seconds -> minutes */
  192.  
  193. #define zero_struct(x)    memset(&(x), 0, sizeof(x))
  194. #define zero_array(x)    memset( (x), 0, sizeof(x))
  195. #define copy_struct(src, dest)    memcpy(&(dest), &(src), sizeof(src))
  196. #define copy_array(src, dest)    memcpy( (dest),  (src), sizeof(src))
  197.  
  198. #define ABS(x)        ((x<0) ? (-(x)) : (x))
  199. #define MIN(x,y)        ((x) < (y) ? (x) : (y))
  200. #define MAX(x,y)        ((x) > (y) ? (x) : (y))
  201.  
  202. #endif /* _CTDL_H */
  203.